package cn.kgc.shiro;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;

/**
 * Hello world!
 *
 * shiro 认证流程
 * 1. Subject      认证主体
 * 2. SecurityManager   安全管理器
 * 3. Authenticator     认证器
 * 4. Realm             抽取编写认证和授权代码位置的对象
 */
public class App {

    public static void main(String[] args) {

        // 创建安全管理器
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        //  Realm对象  实现认证操作   IniRealm    shiro中默认提供的一个可以加载 .ini配置文件的realm对象
        IniRealm  iniRealm = new IniRealm("classpath:user.ini");
        defaultSecurityManager.setRealm(iniRealm);
        // SecurityUtils 设置安全管理器
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        // 1.获取认证主体  Subject   安全管理工具类SecurityUtils 获取认证主体
        Subject subject = SecurityUtils.getSubject();
        // 2. 调用认证方法 实现认证
        String username = "root";
        String password = "666666";
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);
        // 没有异常认证通过
        subject.login(usernamePasswordToken);
        //  isAuthenticated()  判定认证是否通过
        System.out.println("认证通过:"+subject.isAuthenticated());


    }
}
